The present invention relates to transfer of data in a data processing environment. More particularly, the present invention relates to methods and systems for re-organizing data from a data stream so as to maximize the utilization of available data transfer bandwidth on a data pathway.
A data processing system typically includes fixed pathways for transferring data between elements within the system. These pathways typically have a maximum data path width, and a maximum frequency at which data may be placed onto the pathway. For example, a high-performance data bus pathway between a graphics controller and a graphics frame buffer may have a data path that is 128-bits wide onto which data may be placed during every cycle of a bus clock.
In order to maximize utilization of a communication pathway, the pathway's width should be filled as much as possible each time data is placed on the pathway. However, data to be transferred may have unit sizes which differ from the width of the pathway. For example, a graphics controller may process and seek to transfer data in, e.g., 24-bits- or 32-bits-wide units, whereas the data bus for transferring data may be 128-bits wide. In this situation, simply sending each unit of data by itself via the pathway would be wasteful of transfer bandwidth. What is needed is a scheme for transferring data that avoids such waste.
Such waste of transfer bandwidth is particularly undesirable in modern graphics subsystems because these subsystems need to transfer increasingly large amounts of video data from a graphics controller to a frame buffer due to an industry trend toward providing larger, higher-resolution, flicker-free video displays with increased color depth.
A rudimentary system exists for transferring data across a bus while avoiding such waste in certain circumstances. This rudimentary system exists within the graphics subsystem of UltraSPARC 1 workstations built by the assignees of the present invention. See, UltraSPARC 1 User's Manual, Sun Microsystems. The rudimentary system is severely limited because it can properly combine data from multiple requested data transfers only upon certain very precise conditions. If these conditions are not met, the rudimentary system may overwrite valid data as it tries to combine data from multiple packets.
What is needed are methods and systems for conserving data transfer bandwidth on a data pathway under a greater variety of conditions. What is also needed are methods and systems for conserving data transfer bandwidth that do not overwrite valid data.